安安,今天是重度拖延的狀態,在最後一個小時才開始寫稿 QQ
一放長假果然就鬆懈了呢 XDDDDD
今天來談一下 JWT(Json Web Token)的設計,JWT 在這幾年也是許多系統在做登入及登出功能時常會使用的方式。
JWT 是一種無狀態(Stateless)的方式,既然是無狀態,那我們就先稍微提一下伺服器有狀態的實作方式,通常都是使用 Session 來實作,而 Session 在網頁技術中,要嘛是用 Cookie 儲存,但是 Cookie 是存在客戶端,因此無法保證資料的正確。另一種方式則是使用直接輸出並嵌入頁面的方法,因此變成 Server 這邊需要儲存,如果網站大量使用 Session,則會造成 Server 負擔。
JWT 是一組 Json 組成的字串,包含三個部分,並以 .
來區分:
通常會長得像這個樣子。
eyJ0eXAiOiJKV1TGHJKGowrhkopadf1NiJ9.eyJpc3MiOiJodHRwczpcL1wvZGV2LWNybS4xLW9uZXN0b25lLmNvbVwvYXBpXC9hdXRoXC9sb2dpbiIsImlhdCI6MTaopwketrjOUHOqetjFWaetkEFJzdWIiOjEsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEifQ.8sQa2Wm2BjQym5s9i6r_IOGjwrhX9SF1CvRfnUBeA
可以至 jwt.io 看一下如何解析 JWT 資訊。
Header 會存放產生這組 Token 的演算法編碼方式,Payload 可以存放任何用戶的資訊,但這串資訊是能夠被解開的,所以並不建議存放較機敏的資訊,Signature 存放 Header、Payload 與我們定義的密鑰產生。
JWT 有以下優點:
今天中秋假期,礙於回鄉緣故來不及寫完,沒辦法把所有的概念講清楚,對有看文章的人感到抱歉,明天我會補上 JWT 實作時的完整流程,再請大家收看囉,明天見!